Skip to main content

Release Notes 9.2.0

🐞 Voter log errors

Username is different for voter logs generated by keycloak and by windmill (one is the username and the other the email address).

🐞 Admin Portal > Sidebar: Can't select active events tab if all Events are archived

If all existing Election Events are archived and you click on the "Active" tab of the Admin Portal sidebar, it goes back to the Archived tab automatically.

🐞 Default Invalid vote policy mismatch

The default Invalid Vote Policy was different in the backend and the front-end. As a result, the UI displayed the policy as warn-explicit-and-implicit, even though the actual default (when not predefined) was allowed.

🐞 Can't see Election Lists

Due to a recent change, a bug was introduced that hid Candidate Lists in the Voting Portal.

🐞 Admin Portal > "Something went wrong" error when switching between diferent elections/questions

Prevent error when switching between elections on the "Data" tab by safely handling an undefined record.

🐞 Failed scheduled event

Scheduled events and reports were being executed multiple times due to a timing mismatch between the beat scheduler's polling interval (10 seconds by default) and the look-ahead window used by the tasks (hardcoded to 60 seconds). This caused the same events/reports within the 60-second window to be repeatedly discovered and queued on each 10-second poll.

The fix passes the configured schedule interval (schedule_events_interval and schedule_reports_interval) from the beat to the task functions, which now use it as their look-ahead window instead of the hardcoded 60 seconds, ensuring each scheduled item is processed exactly once.

Also now admin users can schedule start/stop election events, as for those cases selecting an election is not required.

🐞 Investigate rabbitmq issues

The Electoral Log Windmill maintains a RabbitMQ connection, but sometimes it gets disconnected and Windmill didn't try reconnecting. Moreover, the probe didn't check the connection status. This fixes the issue by checking the connection status and reconnecting if necessary and checking the status of the connection in the probe.

🐞 Can't export voters list

In specific cases of Election Events with hundreds of areas and elections and millions of voters, exporting voters failed because of an issue with logging a specific function.

🐞 Admin Portal > Tally > Actions Popup Menu doesn't close after click

Within the Results & Participation section of the Tally tab of the Admin Portal, when clicking in some action item inside the Actions Popup Menu for Elections, the Popup Menu didn't automatically close and also in some cases it moved to the bottom right corner.

🐞 Admin Portal > Import Election Event: Password Dialog doesn't auto focus

When importing an election event that is encrypted, a dialog pops up asking for the password. But the password field doesn't autofocus so the admin user has to click on it.

Additionally, when an error is shown in the import election event dialog, it will reappear when closing and reopening the import drawer.

🐞 Keycloak Election ids are not filtered by area

When a voter logs in and the voter is not assigned any election, keycloak adds all election ids to the header. However only some election ids are actually related to the user area and only those should be included.

🐞 Keycloak: Redirect To Registration Authenticator doesn't work when http-relative-path is set

Keycloak: Redirect authenticator doesn't work when http-relative-path is set. The reason is that the http-relative-path is set twice, /auth appears twice in the URL.

🐞 Keycloak: Deferred authenticator in Login mode ask for password confirmation

When using the Deferred Authenticator in Login mode, it was asking for password confirmation and it was not checking that the password matches that of the user.

## 🐞 Voting Portal: Invalid/BlankVote Candidates do not follow sort order

Voting Portal: Invalid/BlankVote Candidates do not follow sort order within the top/bottom invalid candidates block.

🐞 Invalid Vote Position was not configurable in Admin Portal > Candidate

Added Invalid Vote Position configuration in Admin Portal > Candidate. This was already in the backend, but it was not configurable in the Admin Portal.

## 🐞 Admin Portal > Sidebar: Fix left and right margins in tenant & election event actions

✨ Automatically generate tally documents after tally finishes

Added a post tally task that renders all the html reports to pdf. The pdfs are included into the event tar.gz file that can be downloaded from the Tally results page in Admin portal.

🐞 Inconsistencies in Voting Portal

Removed inconsistencies and bugs when selecting candidates, explicit blank, null votes, undervotes, overvotes and with single/multi-contest encoding.

✨ Standarize "Overseas voters turnout"

Rename report to "Voters Turnout" and remove "Overseas", "OV" or other non standard terminology from the report, admin portal and source code. Create documents and tutorials about the voters tab, adding User Attributes to keycloak, or how to create reports and templates.

🐞 Tally shows as an Admin 1 election but as a Trustee it shows 2 elections

At the trustees tally ceremony, all elections were fetched instead of only those selected to participate in the tally.

✨ Move release notes to Docusaurus

Moved developer release notes to Docusaurus. Updated release notes for various existing versions, v8.7.5, v8.7.6, v9.1.0 and v9.1.1.

🐞 Velvet test errors

A failing velvet test was identified due to a recent change: ballots exceeding the maximum allowed votes are now classified as invalid. Since this behavior was not previously enforced, the corresponding test required an update.

✨ Early voting for child areas

Add per-area Early Voting policy with UI checkbox (allowed only if the Election Event allows the EARLY_VOTING channel) and adapt import/export/upsert support. Backend now stores EarlyVotingPolicy and area presentation; publications use area_presentation on BallotStyle. EARLY_VOTING can be allowed and started at event level, its lifecycle is governed by Online (auto-closes on Online start/close; cannot start after Online begins), while Kiosk remains independent. Publish UI consolidates per-channel actions in a dropdown for every start/pause/stop button; Voting Portal and Harvest endpoints honor early voting only for voters in enabled areas when the channel is started.

✨ Improve Dashboard print look

Improve the election event/election dashboard so that all necessary data (statistics) are displayed correctly in print mode.

✨ Weighted voting for areas

Added a new election event policy at EVENT > DATA > Advanced configurations: Weighted voting policy. When the policy is set to Weighted Voting for Areas, it allows assigning a weight to each area. Tally results will then be calculated based on these weights, which are taken from the ballot style of each area defined at publication.

✨ Electoral results charts/visualization

Added Charts in the Admin Portal's Tally Results below the data tables to display the General Information, Participation Results and Candidate Results.

🐞 Windmill > Can't create Ballot Images on ARM

The correct version of java jvm for the container architecture is installed instead of just defaulting to installing x86-x64 version.

🐞 Contest result extended metrics are 0

Fixes the extended metrics calculation that is visible in the json file of the tally result files in velvet-generate-reports. It contains the value of some election metrics.